package com.xf.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xf.common.core.entity.QueryRequest;
import com.xf.common.core.entity.dmp.DmpAuthUser;
import com.xf.common.core.exception.FebsException;

import java.util.List;
    /**
*@author JoeyLiu
*@create 2022-04-01 13:59
*/
public interface DmpAuthUserService  extends IService<DmpAuthUser> {



        /**
         * 通过用户名查找用户
         *
         * @param username 用户名
         * @return 用户
         */
        DmpAuthUser findByName(String username);

        /**
         * 查找用户详细信息
         *
         * @param request request
         * @param user    用户对象，用于传递查询条件
         * @return IPage
         */
        IPage<DmpAuthUser> findUserDetailList(DmpAuthUser user, QueryRequest request);

        /**
         * 通过用户名查找用户详细信息
         *
         * @param username 用户名
         * @return 用户信息
         */
        DmpAuthUser findUserDetail(String username);

        /**
         * 更新用户登录时间
         *
         * @param username username
         */
        void updateLoginTime(String username);

        /**
         * 新增用户
         *
         * @param user user
         */
        void createUser(DmpAuthUser user);

        /**
         * 修改用户
         *
         * @param user user
         */
        void updateUser(DmpAuthUser user);

        /**
         * 删除用户
         *
         * @param userIds 用户 id数组
         */
        void deleteUsers(String[] userIds);

        /**
         * 更新个人信息
         *
         * @param user 个人信息
         * @throws FebsException 异常
         */
        void updateProfile(DmpAuthUser user) throws FebsException;

        /**
         * 更新用户头像
         *
         * @param avatar 用户头像
         */
        void updateAvatar(String avatar);

        /**
         * 更新用户密码
         *
         * @param password 新密码
         */
        void updatePassword(String password);

        /**
         * 重置密码
         *
         * @param usernames 用户集合
         */
        void resetPassword(String[] usernames);
}
